package net.ib.mtalk.constant;

public class NetworkConstant {

	/** 테스트용 서버 주소로 접근할지를 나타내는 플래그 */
	public static boolean TEST_SERVER = true;

	/**
	 * 세션 서버 관련 세팅 상수 모음
	 * @author Arngard
	 *
	 */
	public static class Session {

		public static final String	CHANNEL_GROUP		= "MTalkClient";

		/** TCP 네트워크 타임아웃 시간 */
		public static final int		TIMEOUT_MILLIS		= 9 * 1000;
		/** Nagle 알고리즘 사용 여부 */
		public static final boolean	USE_NAGLE_ALG		= false;
		/** SSL 사용 여부 */
		public static final boolean	USE_TLS_SSL			= false;

		/** 네트워크 대기열의 크기 */
		public static final int		THREAD_BUCKET_SIZE	= 100;
		/** 네트워크 작업소의 크기 */
		public static final int		THREAD_POOL_SIZE	= 1;
		/** 네트워크 작업이 작업소에서 생존할 수 있는 시간. 이 시간은 대기열에서 소모한 시간과는 별개이다. */
		public static final int		THREAD_ALIVE_TIME	= 11 * 1000;
		/** 네트워크 작업이 대기열에서 생존할 수 있는 시간. 이 시간은 작업소에 들어간 후의 생존 시간과 별개이다. */
		public static final long	THREAD_WAIT_TIME	= 13 * 1000;

		/** 세션 서버 기본 주소 */
		public static final String 	BASE_DOMAIN 	= (!TEST_SERVER)? "gw.mand.co.kr":"monkey.mnp.infobank.net";
		public static final int		BASE_PORT		= USE_TLS_SSL ? 1106 : 1105;	// TODO 암호화 테스트용 포트

	}
	
	/** C2DM Sender ID로 등록된 메일 주소. */
	public static final String	C2DM_SENDER_ID		= "android@infobank.net";
	/** 푸시 루틴에서 연결 재확인 주기. LongPolling 리턴이 없을 때 주기를 재시작할 시간. */
	public static final long 		PUSH_CHECK_TIME		= 30 * 60 * 1000;
	/** 푸시 루틴에서 Long Polling Timeout 값. */
	public static final long 		PUSH_POLL_TIME		= 28 * 60 * 1000;
	/** 푸시 루틴에서 연결 상태가 좋지 않은 경우 재시도를 위해 대기하는 짧은 시간 간격. */
	public static final long		PUSH_RECONNECT_TIME	= 30 * 1000;
	
	/**
	 * 파일 서버 관련 세팅 상수 모음
	 * @author Arngard
	 *
	 */
	public static class FileServer {

		public static final String	CHANNEL_GROUP		= "MTalkFile";

		/** TCP 네트워크 타임아웃 시간 */
		public static final int		TIMEOUT_MILLIS		= 9 * 1000;
		/** Nagle 알고리즘 사용 여부 */
		public static final boolean	USE_NAGLE_ALG		= false;

		/** 네트워크 대기열의 크기 */
		public static final int		THREAD_BUCKET_SIZE	= 100;
		/** 네트워크 작업소의 크기 */
		public static final int		THREAD_POOL_SIZE	= 1;
		/** 네트워크 작업이 작업소에서 생존할 수 있는 시간. 이 시간은 대기열에서 소모한 시간과는 별개이다. */
		public static final int		THREAD_ALIVE_TIME	= 11 * 1000;
		/** 네트워크 작업이 대기열에서 생존할 수 있는 시간. 이 시간은 작업소에 들어간 후의 생존 시간과 별개이다. */
		public static final long		THREAD_WAIT_TIME	= 13 * 1000;

		/** 파일 서버 기본 주소 */
		public static final String 	BASE_DOMAIN 	= (!TEST_SERVER)? "file.mand.co.kr":"monkey.mnp.infobank.net";
		public static final int		BASE_PORT		= (!TEST_SERVER)? 1125:8000;
		
		/**
		 * 일반적으로 TCP/IP 레이어의 세그먼트의 최대크기(MSS)는 대체로 1460 byte 정도.
		 * 안드로이드 에뮬레이터의 UDP 패킷 사이즈는 8KB 라고 하지만 단말과는 무관한 것 같다. 단말에서는 1491 byte 라는 설이 있음.<br>
		 * <br>
		 * 부가 정보를 위한 여유 공간을 감안해서, 잘라 보내는 파일 사이즈는 1024 byte로 하자.<br>
		 * <br>
		 * <font color=#ff0000>Caution!</font> 의도대로 돌아가려면 반드시 네이글 알고리즘이 꺼져 있어야 한다.
		 * */
		public static final int		SLICE_DEFAULT_SIZE		= 1024;
	}

}
